Skip to main content

LLM API로 나만의 챗봇 UI만들기

· 10 min read
이종근
데이터플랫폼연구센터 연구원

본 문서에서는 KADaP APIOpen WebUI를 이용한 나만의 챗봇을 만드는 방법 소개합니다.

개요

1. KADaP API

자동차데이터플랫폼 (KADaP; Korea Automotive Data Platform) 에는 AI 및 자동차 산업에 특화된 API 를 이용할 수 있는 KADaP API 서비스를 제공하고 있습니다.

KADaP API 는 자동차데이터포털 계정으로 로그인 후 이용 가능하며, 필요한 API 에 대하여 사용 신청 후 사용 가능합니다.

사용자가 분석 및 개발한 결과물 (e.g., 알고리즘) 을 API 형태로 공유할 수 있는 API Gateway 기능을 제공합니다.

KADaP_API

2. Open WebUI

Open WebUI 는 Ollama 및 OpenAI 호환 프로토콜을 지원하는 AI 배포 솔루션입니다. 대규모 언어모델 (LLM) 과 상효작용을 위한 웹 기반 인터페이스로, 명령줄 도구 (CLI) 대신 그래픽 사용자 인터페이스 (GUI) 를 제공합니다. Docker/Kubernetes 또는 uv 를 통해 간편하게 설치할 수 있으며, GPU 지원 (CUDA) 및 Ollama 번들 이미지 등을 제공하여 쉽게 배포하고 관리할 수 있습니다.

Open WebUI

본 문서에서는 KADaP CLOUD 환경에서 Docker 를 이용한 Open WebUI 설치 및 사용 방법에 대한 가이드를 제공합니다.


Open WebUI 설치

Open WebUI 는 Docker 를 사용하여 빠르게 설치할 수 있습니다. Docker 사용하기 위해서는 현재 서버 또는 PC 내부에 Docker 에이전트가 설치되어 있어야 합니다.

info

KADaP CLOUD 의 Docker 에이전트 이미지를 사용하면 별도의 설치없이 바로 사용 가능합니다. 자세한 내용은 문서 에서 확인 가능합니다.

KADaP CLOUD

1. Open WebUI 이미지 다운로드

아래 명령어를 통해 최신 Open WebUI Docker 이미지를 가져옵니다.

docker pull ghcr.io/open-webui/open-webui:main


또는 제한적인 환경을 위해 사전 번들 모델을 제외한 간소화된 이미지 버전을 아래 명령어를 통해 가져올 수 있습니다. 이미지 크기는 작지만, 처음 사용할 때 필요한 모델 (whisper, 임베딩 모델) 을 별도로 다운로드 받아야합니다.

docker pull ghcr.io/open-webui/open-webui:main-slim

본 문서에서는 slim 모델이 아닌 원본 모델을 사용합니다.


2. 컨테이너 실행

2-1. KADaP CLOUD 환경

KADaP CLOUD 환경에서 기본 설정으로 컨테이너 실행을 위해서는 아래의 명령어를 이용합니다.

sudo docker run -d \
--network=host \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main

볼륨 매핑 위치를 변경하려면 -v {볼륨 위치}:/app/backend/data 부분을 수정하면 됩니다.

info

CLOUD 사양에 따라 Docker 실행에 시간이 소요될 수 있습니다.


간소화된 slim 버전의 이미지를 사용한다면 아래의 명령어로 컨테이너 실행할 수 있습니다. 기본 명령어의 실행 이미지만 변경하면 됩니다.

sudo docker run -d \
--network=host \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main-slim
info

이외의 컨테이너 실행 명령어는 Docker 공식 문서 에서 확인할 수 있습니다.


2-2. Ubuntu (WSL) 환경

Ubuntu (리눅스) 서버 혹은 WSL 환경에서 기본 설정으로 컨테이너 실행을 위해서는 아래의 명령어를 이용합니다. 이 명령에는 컨테이너 데이터 저장을 위한 볼륨 매핑이 포함되어 있습니다.

sudo docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main

볼륨 매핑 위치를 변경하려면 -v {볼륨 위치}:/app/backend/data 부분을 수정하면 됩니다.


간소화된 slim 버전의 이미지를 사용한다면 아래의 명령어로 컨테이너 실행할 수 있습니다. 기본 명령어의 실행 이미지만 변경하면 됩니다.

sudo docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main-slim


Open WebUI 설정 및 챗봇 연결

1. 클라우드 환경 설정

KADaP CLOUD 와 KADaP API 연동을 위해서는 클라우드 내 hosts 파일 수정이 필요합니다. 아래 명령어를 통해 클라우드 서버의 hosts 파일에 접근할 수 있습니다.

sudo vi /etc/hosts

hosts 파일 내 아래의 내용을 추가하여 KADaP API 서버에 연결할 수 있도록 수정합니다.

10.10.50.100 api-gateway.bigdata-car.kr

내용을 추가했을 때 /etc/hosts 파일의 내용은 아래와 같은 형태가 됩니다.

127.0.0.1 localhost
10.10.50.100 api-gateway.bigdata-car.kr

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

2. 챗봇 만들기

KADaP API 는 OpenAI 의 gpt, LG AI 의 EXAONE 을 포함한 약 600 여개의 LLM 모델을 API 형태로 지원합니다. 본 문서에서는 LG AI 의 EXAONE-3.5-7.8B-Instruct 모델을 API 로 연결하는 방법에 대해 설명합니다.

2-1. KADaP API 연결정보 확인

KADaP API 상세정보에는 해당 API 를 외부에서 쉽게 연결할 수 있도록 연결정보를 제공하고 있습니다. API DOCS 바로가기 버튼을 통해 연결정보를 확인할 수 있습니다.

API DOCS

DOCS 페이지에서 해당 API 호출을 위한 endpoint, request body 등 정보를 확인할 수 있습니다.

API DOCS 2

2-2. Open WebUI 설정

도커 이미지로 실행시킨 Open WebUI 에 접속합니다. Open WebUI 는 8080 포트를 통해 배포되며, KADaP CLOUD 사용자는 CLOUD 의 포트포워딩 기능을 사용하여 외부 포트를 할당받아 접속할 수 있습니다.

최초 접속 시 사용자 이름, 이메일, 비밀번호를 등록해야합니다. 해당 정보는 Docker 컨테이너의 /app/backend/.webui_secret_key 파일에 암호화되어 저장되고, 추후 접속 시 로그인을 위해 사용됩니다.


[챗봇 연결]

로그인 후, 관리자 패널의 설정 페이지에 접속합니다.

관리자 패널 접속

연결 탭으로 이동 후 우측의 OpenAI API 연결 추가 (+) 버튼을 클릭합니다.

관리자 패널 접속 2

연결 추가 팝업 내 URL, Headers, 모델 ID 를 추가합니다.

URL 은 KADaP API 의 DOCS 에서 확인한 Server 주소 뒤에 /api/v1 을 붙여 입력합니다. Headers 에 DOCS 에서 확인한 개인 API key 를 "X-Api-Key" 이름으로 입력합니다. 모델 ID 는 DOCS 에서 확인한 Request body 의 model 이름을 입력합니다.

해당 예시는 KADaP API 의 EXAONE-3.5-7.8B-Instruct 모델에 대한 예시이며, 모델 명은 /.exaone 입니다.

OpenAI 의 모델을 사용한다면 gpt-4o 와 같은 모델 명을 입력할 수 있습니다.

챗봇 연결 설정
info

OpenAI Client 를 이용하여 챗봇 호출하는 구조이며, 이 때 /api/v1/chat/completions 형태로 호출합니다.
/chat/completion 는 자동으로 붙여서 호출되어 해당 API 등록 시 URL 에 /api/v1 부분만 추가 입력하여 사용합니다.

연결 성공 시 OpenAI API 설정이 업데이트되었습니다. 알림과 함께 API 가 등록됩니다.

연결 성공

이제 홈 화면에서 등록한 모델을 사용하여 채팅할 수 있습니다!

연결 성공 (홈)